package cn.java68.aop;

import cn.java68.service.User;
import org.aspectj.lang.ProceedingJoinPoint;

import java.util.Arrays;
import java.util.Date;

public class UserAop {
    //环绕式
    public Object around(ProceedingJoinPoint jp)throws Throwable{
        System.out.println("方法:"+jp.getSignature().getName()+"在 "+new Date()+"被调用");
        System.out.println("参数:"+ Arrays.toString(jp.getArgs()));
        if(jp.getSignature().getName().equals("add")){
            User user=(User)jp.getArgs()[0];
            if(user.getAge()<14||user.getAge()>40)
            {
                throw new RuntimeException("错误的用户参数!");
                //return false;
            }
        }
        Object o=jp.proceed();//执行真正的业务方法,o就是业务方法的返回值
        System.out.println("结束于:"+new Date()+",返回值是:"+o);
        return o;
    }
}
